class Solution:
    def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]:
        """
        计算两个区间A， B的交集的情况 是由四个原子情况组成的
        1. [ A [] B]  A的左边界大于B的左边界， 而A的右边界小于B的左边界  交集 [B left, A right]
        2. [ B [] A]  B的左边界大于A的左边界， 而B的右边界小于A的左边界  交集 [A left, B right]
        3. [A [B] ] A完全包裹B 交集 B
        4. [B [A] ] B完全包裹A 交集 A

		计算两个区间的交集情况就这么多，把所以情况都列出来就可以处理，可以把这些操作看为是最基础的原子操作
		后面的计算都是基于这些原子操作的
        """
        
        def calIntersection(A, B):
            Al, Ar = A
            Bl, Br = B
            if Al <= Bl and Br >= Ar and Ar >= Bl:
                return [Bl, Ar]
            elif Bl <= Al and Ar >= Br and Br >= Al:
                return [Al, Br]
            elif Al >= Bl and Ar <= Br:
                return [Al, Ar]
            elif Al <= Bl and Ar >= Br:
                return [Bl, Br]
            else:
                return None
        
        res = [] 
        for i, f in enumerate(firstList):
            fl, fr = f
            for j, s in enumerate(secondList):
                sl, sr = s
                ans = calIntersection(f, s)
                if ans == None:
                    continue
                else:
                    res.append(ans)
        
        return res
                
                
        
            